<!DOCTYPE html>
<html lang="zh-CN">
	<head>
		<meta charset="UTF-8" />
		<meta name="viewport" content="width=device-width, initial-scale=1.0" />
		<title>编码（encoding）</title>
	</head>
	<body>
		<script>
			// 【使用 URL 对象会自动处理需要编码的字符，我们只需要提供未编码的参数即可，无需手动编码】
			let url1 = new URL('https://ru.wikipedia.org/wiki/Тест')
			url1.searchParams.set('key', 'ъ')
			alert(url1) //https://ru.wikipedia.org/wiki/%D0%A2%D0%B5%D1%81%D1%82?key=%D1%8A（对齐进行了自动编码）

			// ******************************************************************************************************************************
			// ******************************************************************************************************************************
			// ******************************************************************************************************************************

			// encodeURI 对于整个 URL 进行编码。
			const url = encodeURI('https://javascript.info/profile/привет')
			console.log(url) // https://javascript.info/profile/%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82

			// decodeURI 对于整个 URL 进行解码。
			console.log(decodeURI(url)) // https://javascript.info/profile/привет

			// ******************************************************************************************************************************

			// encodeURIComponent —— 编码 URL 组件，例如搜索参数，或者 hash，或者 pathname。
			let musicKey = encodeURIComponent('q&r')
			let music = encodeURIComponent('Rock&Roll')
			let url2 = `https://google.com/search?${musicKey}=${music}`
			console.log(url2) // https://google.com/search?q%26r=Rock%26Roll

			// decodeURIComponent —— 解码 URL 组件，例如搜索参数，或者 hash，或者 pathname。
			console.log(decodeURIComponent(url2)) // https://google.com/search?q&r=Rock&Roll
		</script>
	</body>
</html>
